Hive হল একটি ডেটাবেস সিস্টেম যা Hadoop এর উপরে কাজ করে এবং বড় ডেটাসেট প্রক্রিয়াকরণের জন্য HiveQL ব্যবহার করে। যদিও Hive বেশ কিছু স্ট্যান্ডার্ড ফাংশন প্রদান করে, তবুও অনেক সময় ব্যবহারকারীর কাস্টম প্রক্রিয়া করার প্রয়োজন হয়। এই জন্য Hive User Defined Functions (UDFs) ব্যবহৃত হয়। UDFs Hive-এ কাস্টম ফাংশন তৈরি করতে ব্যবহৃত হয় যা স্ট্যান্ডার্ড SQL ফাংশনের বাইরে কাজ করতে পারে।
UDF (User Defined Functions) কী?
User Defined Functions (UDFs) হল কাস্টম ফাংশন যা Hive-এ SQL এর মতো ব্যবহারকারীকে তাদের নিজস্ব প্রক্রিয়া করার সুযোগ দেয়। এই ফাংশনগুলো ব্যবহারকারীর তৈরি করা কোডের মাধ্যমে কাজ করে, এবং এটি HiveQL-এর অংশ হিসেবে কার্যকরী হয়। UDF-এর সাহায্যে আপনি অদ্ভুত বা বিশেষ ধরনের ডেটা প্রক্রিয়া করতে পারেন যা Hive-এর স্ট্যান্ডার্ড ফাংশন দ্বারা সম্ভব নয়।
UDF তৈরি করার জন্য প্রক্রিয়া
Hive-এ UDF তৈরি করার জন্য Java প্রোগ্রামিং ভাষায় কোড লেখা হয় এবং এটি Hive-এ কার্যকরী করতে Jar ফাইল হিসেবে লোড করা হয়। নিচে UDF তৈরি করার প্রক্রিয়া দেওয়া হলো:
১. Java ক্লাস তৈরি
UDF তৈরি করতে প্রথমে একটি Java ক্লাস তৈরি করতে হবে যা Hive-এর UDF ক্লাস থেকে extends করবে। এই ক্লাসে evaluate() মেথডটি অবশ্যই রিইনভার্ট করতে হবে।
UDF ক্লাস উদাহরণ:
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
public class UpperCaseUDF extends UDF {
public Text evaluate(Text input) {
if (input == null) {
return null;
}
return new Text(input.toString().toUpperCase());
}
}
এখানে, UpperCaseUDF একটি স্ট্রিং ইনপুট গ্রহণ করে এবং এটি বড় হাতের অক্ষরে রূপান্তরিত করে।
২. Java ক্লাস কম্পাইল করে Jar তৈরি করা
Java কোডটি কম্পাইল করতে হবে এবং একটি Jar ফাইল তৈরি করতে হবে। নিচে একটি উদাহরণ দেওয়া হলো:
javac -classpath $(hadoop classpath):$(hive --config /path/to/hive/conf classpath) UpperCaseUDF.java
jar -cvf myudf.jar UpperCaseUDF.class
এটি UpperCaseUDF নামক Jar ফাইল তৈরি করবে, যা Hive-এ ব্যবহার করা যাবে।
৩. Jar ফাইল Hive-এ লোড করা
এখন আপনাকে তৈরি করা Jar ফাইল Hive-এ লোড করতে হবে যাতে আপনি UDF ব্যবহার করতে পারেন। নিচে কিভাবে Jar ফাইল লোড করা যাবে তার একটি উদাহরণ দেওয়া হলো:
ADD JAR /path/to/myudf.jar;
CREATE TEMPORARY FUNCTION uppercase AS 'UpperCaseUDF';
এটি myudf.jar ফাইলটিকে Hive-এ লোড করবে এবং uppercase নামক একটি ফাংশন তৈরি করবে যা UpperCaseUDF ক্লাসকে নির্দেশ করবে।
৪. UDF ব্যবহার করা
আপনি এখন HiveQL কুয়েরিতে তৈরি করা UDF ব্যবহার করতে পারবেন। উদাহরণ:
SELECT uppercase(name) FROM employee;
এটি employee টেবিলের name কলামটির সব মানকে বড় হাতের অক্ষরে রূপান্তর করবে।
UDF এর সুবিধা এবং ব্যবহার
- কাস্টম প্রক্রিয়া: UDF-এর মাধ্যমে আপনি স্ট্যান্ডার্ড HiveQL ফাংশনের বাইরে কাস্টম প্রক্রিয়া তৈরি করতে পারবেন, যেমন বিভিন্ন ধরনের ডেটা ট্রান্সফরমেশন, ক্যালকুলেশন, বা বিশেষ বিশ্লেষণ।
- প্রসেসিং ক্ষমতা বৃদ্ধি: Hive-এর মধ্যে নিজস্ব প্রক্রিয়া যুক্ত করার মাধ্যমে, আপনি আপনার বিশেষ প্রয়োজনীয়তা পূরণ করতে পারেন যা Hive-এর বিল্ট-ইন ফাংশন দ্বারা সম্ভব নয়।
- অন্য টুলসের সাথে ইন্টিগ্রেশন: আপনি Hive-এ নিজের টুল বা অন্যান্য কাস্টম কোড ইন্টিগ্রেট করতে পারেন UDF ব্যবহার করে, যা ডেটা বিশ্লেষণকে আরো নমনীয় এবং কার্যকরী করে তোলে।
UDF-এর সাধারণ ব্যবহার
String Manipulation: যেমন স্ট্রিংয়ের মধ্যে কোন শব্দ বা অক্ষর পরিবর্তন করা।
public class ReplaceSubstringUDF extends UDF {
public Text evaluate(Text input, String oldSubstr, String newSubstr) {
if (input == null || oldSubstr == null || newSubstr == null) {
return null;
}
return new Text(input.toString().replace(oldSubstr, newSubstr));
}
}
Mathematical Calculations: যেমন একটি বিশেষ গণনা বা সিম্পল ম্যাথ ক্যালকুলেশন করা।
public class MultiplyByTwoUDF extends UDF {
public IntWritable evaluate(IntWritable input) {
if (input == null) {
return null;
}
return new IntWritable(input.get() * 2);
}
}
Date Manipulation: যেমন তারিখের উপর ভিত্তি করে বিশেষ কাজ করা।
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateFormatUDF extends UDF {
public Text evaluate(Text input) {
if (input == null) {
return null;
}
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(input.toString());
return new Text(new SimpleDateFormat("MM-dd-yyyy").format(date));
} catch (Exception e) {
return null;
}
}
}
উপসংহার
Hive-এ User Defined Functions (UDFs) তৈরি এবং ব্যবহার করার মাধ্যমে আপনি আপনার নির্দিষ্ট প্রয়োজন অনুযায়ী কাস্টম ফাংশন তৈরি করতে পারেন। এটি Hive-এ কাস্টম প্রক্রিয়া, ক্যালকুলেশন বা ডেটা ট্রান্সফরমেশন করার জন্য একটি শক্তিশালী টুল। Java প্রোগ্রামিং ভাষায় কোড লিখে Jar ফাইল তৈরি করে Hive-এ লোড করা হয় এবং তারপর তা HiveQL কুয়েরিতে ব্যবহার করা যায়। Hive-এর UDF ফাংশনটি ডেটা বিশ্লেষণ এবং প্রক্রিয়াকরণের প্রক্রিয়াকে আরো নমনীয় এবং শক্তিশালী করে তোলে।
Read more